package monitora.dao;

import java.io.Serializable;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

public class LoginPrefeituraDAO implements Serializable {
	
	public boolean valido(String usuario, String senha) {
		try {
			SessionFactory sessionFactory = Sessao.getSessionFactory();
			Session session = sessionFactory.openSession();
			
			List lista = session.createSQLQuery("SELECT * FROM PREFEITURA.SF_LOGIN_VALIDO(:USUARIO, :SENHA)")
							.setParameter("USUARIO", usuario)
							.setParameter("SENHA", senha)
							.list();
			
			int resultado = (Integer) lista.get(0);
			
			return resultado == 0 ? true : false;
		} catch (Exception exception) {
			exception.printStackTrace();
		}
		return false;
	}
	
	public List<String> getUsuarios() {
		try {
			SessionFactory sessionFactory = Sessao.getSessionFactory();
			Session session = sessionFactory.openSession();
			
			List lista = session.createSQLQuery("SELECT * FROM PREFEITURA.SF_USUARIOS_LOGIN()")
							.list();
			
			return lista;
		} catch (Exception exception) {
			exception.printStackTrace();
		}
		return null;
	}
	
	public boolean alterarSenha(String usuario, String senha) {
		try {
			SessionFactory sessionFactory = Sessao.getSessionFactory();
			Session session = sessionFactory.openSession();
			Transaction transaction = session.beginTransaction();
			
			List lista = session.createSQLQuery("SELECT * FROM PREFEITURA.SF_ALTERA_LOGIN(:USUARIO, :SENHA)")
							.setParameter("USUARIO", usuario)
							.setParameter("SENHA", senha)
							.list();
			
			transaction.commit();
			session.close();
			
			int resultado = (Integer) lista.get(0);
			
			System.out.println(resultado + "  " + usuario + "  " + senha);
			
			return resultado == 0 ? true : false;
		} catch (Exception exception) {
			exception.printStackTrace();
		}
		return false;
	}
	
	public int getCodigoLogin(String usuario) {
		try {
			SessionFactory sessionFactory = Sessao.getSessionFactory();
			Session session = sessionFactory.openSession();
			
			List lista = session.createSQLQuery("SELECT * FROM PREFEITURA.SF_CODIGO_LOGIN(:USUARIO)")
												.setParameter("USUARIO", usuario)
												.list();
			
			int codigo = -1;
			
			if (lista.size() > 0) {
				codigo = (Integer) lista.get(0);
			}
			
			session.close();
			
			return codigo;
		} catch (Exception exception) {
			exception.printStackTrace();
		}
		return -1;
	}
	
	public static void main(String[] args) {
		System.out.println(new LoginPrefeituraDAO().getUsuarios().toString());
	}
}
